Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Codegenerator</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Codegenerator"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Codegenerator rootpage-Codegenerator skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Codegenerator</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Ein <b>Codegenerator</b> ist ein <a href="Computerprogramm" title="Computerprogramm">Computerprogramm</a> für die <a href="Softwaretechnik" title="Softwaretechnik">Softwareentwicklung</a>. Er übersetzt Modelle, die in <a href="Unified_Modeling_Language" title="Unified Modeling Language">UML</a>, <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>, <a href="Nassi-Shneiderman-Diagramm" title="Nassi-Shneiderman-Diagramm">Struktogrammen</a>, <a href="Entscheidungstabelle" title="Entscheidungstabelle">Entscheidungstabellen</a> oder einer anderen <a href="Formale_Sprache" title="Formale Sprache">formalen Sprache</a> erstellt wurden, in eine <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a> (<a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="Assemblersprache" title="Assemblersprache">Assembler</a>, …) der gewählten Zielplattform. Er erzeugt <a href="Quelltext" title="Quelltext">Quellcode</a> (Codegenerierung), der danach mit anderen Programmteilen zu einem Programm verbunden wird.
</p><p>Das Erzeugnis eines Codegenerators wird (wenn auch selten) als Generat bezeichnet.
</p><p>Im <a href="Compilerbau" title="Compilerbau">Compilerbau</a> ist der Codegenerator der Teil eines <a href="Compiler" title="Compiler">Compilers</a>, der während des Kompiliervorgangs <a href="Maschinensprache" title="Maschinensprache">Maschinencode</a> erzeugt.
</p>

<div class="mw-heading mw-heading2"><h2 id="Modellgetriebene_Codegeneratoren">Modellgetriebene Codegeneratoren</h2></div>

<p>Ein Softwaregenerator oder auch Codegenerator ist ein Stück Software, das über eine problemangepasste Beschreibungssprache Quellcode für komplexere <a href="Software" title="Software">Software</a> erzeugt. Diese Beschreibung kann ein grafisches oder textuelles Modell sein. Er ist somit ein Hilfsmittel zur Effektivierung des Softwareentwicklungsprozesses. Ein Beispiel sind Generatoren, die aus der Beschreibungssprache UML komplette Klassenhierarchien in der gewünschten objektorientierte Zielsprache (z.&nbsp;B.: C++, <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a>) erzeugen. Der aus dem Codegenerator erzeugte Quellcode dient in diesem Falle als <a href="Schnittstelle" title="Schnittstelle">Schnittstelle</a> für einen Nutzer, wohingegen das Diagramm ein <a href="Metamodell" title="Metamodell">Metamodell</a> definiert.
</p><p>Modellgetriebene Codegenerierung aus UML wird schon 2004 für <a href="Eingebettetes_System" title="Eingebettetes System">eingebettete Systeme</a> beschrieben.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Die Erzeugung von Coderahmen wird seit mindestens 2012 als Stand der Technik gesehen. Hierbei werden Klassen mit Attributen und Funktionen generiert. Offen bleibt hierbei der Umgang mit <a href="Round-Trip-Engineering" title="Round-Trip-Engineering">Round-Trip-Engineering</a>, weil Coderümpfe und Visualisierung vermengt werden.<sup id="cite_ref-rumpe2012_2-0" class="reference"><a href="#cite_note-rumpe2012-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Automatisierte_Codegeneratoren">Automatisierte Codegeneratoren</h2></div>
<p>Einfache Varianten arbeiten auf der Basis der Quelldateien und ersetzen so genannte <a href="Makro" title="Makro">Makroaufrufe</a> mit vorgefertigten Textbausteinen. Der <a href="Pr%C3%A4prozessor" title="Präprozessor">Präprozessor</a> ist hierfür ein Beispiel. Andere Varianten generieren vollständig neuen Quellcode, indem sie Metainformationen verarbeiten. Metainformationen beschreiben den Vorgang der Codeerzeugung sowie Eigenschaften des zu erstellenden Programmcodes auf einer höheren Ebene (siehe auch <a href="Modellgetriebene_Architektur" title="Modellgetriebene Architektur">modellgetriebene Architektur</a>) und liegen entweder in separaten Dateien (wie beispielsweise beim <a href="Parsergenerator" title="Parsergenerator">Parsergenerator</a>) oder in Form von Anmerkungen (auch: Attribute, Annotationen) innerhalb des bestehenden Programmcodes vor. Der generierte Code wird, anders als bei manuell gesteuerten Codegeneratoren, vor oder während des Kompiliervorgangs automatisch erzeugt. Die Programmiersprachen <a href="C-Sharp" title="C-Sharp">C#</a> und Java bieten eigene Sprachkonstrukte dafür an (sogenannte <a href="Annotation_(Programmierung)" title="Annotation (Programmierung)">Annotationen</a>).
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>

<p>Beispiele für die Codegenerierung sind:
</p>
<ul><li>Die Erzeugung eines Quelltextes aus einem Diagramm, einem Modell, beispielsweise einem <a href="Programmablaufplan" title="Programmablaufplan">Programmablaufplan</a>, einem Struktogramm oder einem UML-<a href="Modell" title="Modell">Modell</a>, oder aus sonstigen in <a href="Metadaten" title="Metadaten">Metadaten</a> gespeicherten Beschreibungen, um den Kosten- und Zeitaufwand zu senken oder die Qualität der Softwareentwicklung zu erhöhen, <a href="Universal_Application" class="mw-redirect" title="Universal Application">Universal Application</a> und <a href="Computer-aided_software_engineering" title="Computer-aided software engineering">CASE</a></li>
<li><a href="Assembler_(Informatik)" title="Assembler (Informatik)">Assembler</a>, welche aus Assemblercode Maschinencode erzeugen</li>
<li>Compiler, welche aus Code in einer Hochsprache Assembler-Code, Maschinencode oder <a href="Bytecode" title="Bytecode">Bytecode</a> erzeugen</li>
<li>Die Wiederherstellung eines Quelltextes aus dem übersetzten Programm mittels <a href="Reverse_Engineering" title="Reverse Engineering">Reverse Engineering</a></li>
<li>Die automatische Erzeugung aus vorhandenem Code oder vorhandenen Programmteilen, beispielsweise die Erstellung einer <a href="Schnittstellenbeschreibungssprache" title="Schnittstellenbeschreibungssprache">IDL</a>-Schnittstelle aus einer Java-Schnittstelle</li>
<li>Die Erzeugung der Implementierung einer abstrakten Beschreibung beispielsweise bei <a href="Anwendungsserver" title="Anwendungsserver">Application-Server</a>-<a href="Framework" title="Framework">Frameworks</a> wie <a href="Jakarta_EE" title="Jakarta EE">J2EE</a></li>
<li>Die automatische Erzeugung neuer Quelltexte aus Kommentaren und Anmerkungen (<a href="Metadaten" title="Metadaten">Metadaten</a>) in bestehenden Quelltexten, beispielsweise in Java mittels <a href="XDoclet" title="XDoclet">XDoclet</a> oder Annotationen</li>
<li>Im Bereich <a href="Eingebettetes_System" title="Eingebettetes System">eingebetteter Systeme</a> (z.&nbsp;B. Fahrzeugsteuergeräte) die automatische Erzeugung von Seriencode mit einem Codegenerator</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Werkzeuge">Werkzeuge</h2></div>
<ul><li><a href="ASCET" title="ASCET">ASCET</a>-SE (auf Basis der <a href="Automobilindustrie" title="Automobilindustrie">automotive</a> ASCET-Toolfamilie zur <a href="Funktion_(Programmierung)" title="Funktion (Programmierung)">Funktionsentwicklung</a> und <a href="Softwaretechnik" title="Softwaretechnik">Software Engineering</a>)</li>
<li><a href="CAMeL-View" title="CAMeL-View">CAMeL-View TestRig</a> (Entwurfsumgebung zum modellbasierten Entwurf mechatronischer Systeme)</li>
<li><a href="Eclipse_Modeling_Framework" title="Eclipse Modeling Framework">Eclipse Modeling Framework</a></li>
<li><a href="OpenArchitectureWare" title="OpenArchitectureWare">openArchitectureWare</a></li>
<li><a href="Simulink" title="Simulink">Simulink</a> <a href="Hardwarebeschreibungssprache" title="Hardwarebeschreibungssprache">HDL</a> Coder (erzeugt VHDL/Verilog aus Basis von <a href="Matlab" title="Matlab">MATLAB</a>/Simulink/<a href="Stateflow" title="Stateflow">Stateflow</a>)</li>
<li><a href="TargetLink" title="TargetLink">TargetLink</a> (auf Basis von <a href="Matlab" title="Matlab">MATLAB</a>/<a href="Simulink" title="Simulink">Simulink</a>)</li>
<li><a href="Innovator_(Software)" title="Innovator (Software)">Innovator</a></li>
<li><a href="Yakindu_Statechart_Tools" title="Yakindu Statechart Tools">Yakindu Statechart Tools</a> (generiert C/C++ aus Zustandsautomaten)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Generative_Programmierung" title="Generative Programmierung">Generative Programmierung</a></li>
<li><a href="Modellgetriebene_Softwareentwicklung" title="Modellgetriebene Softwareentwicklung">Modellgetriebene Softwareentwicklung</a></li>
<li><a href="Dom%C3%A4nenspezifische_Sprache" title="Domänenspezifische Sprache">Domänenspezifische Sprache</a></li>
<li><a href="Normierte_Programmierung" title="Normierte Programmierung">Normierte Programmierung</a></li>
<li><a href="Makro" title="Makro">Makro</a></li>
<li><a href="UML-Werkzeug" title="UML-Werkzeug">UML-Werkzeug</a>, manche UML-Werkzeuge besitzen Codegenerator-Funktionalität</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Krzysztof Czarnecki and Ulrich W. Eisenecker: <cite style="font-style:italic">Generative Programming: Methods, Tools, and Applications</cite>. Addison-Wesley, 2000.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Codegenerator&amp;rft.au=Krzysztof+Czarnecki+and+Ulrich+W.+Eisenecker&amp;rft.btitle=Generative+Programming%3A+Methods%2C+Tools%2C+and+Applications&amp;rft.date=2000&amp;rft.genre=book&amp;rft.pub=Addison-Wesley" style="display:none">&nbsp;</span></li>
<li>Thomas Stahl, Markus Völter, Sven Efftinge: <cite style="font-style:italic">Modellgetriebene Softwareentwicklung. Techniken, Engineering, Management</cite>. 2. Auflage. Dpunkt Verlag, 2007, ISBN 978-3-89864-448-8.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Codegenerator&amp;rft.au=Thomas+Stahl%2C+Markus+V%C3%B6lter%2C+Sven+Efftinge&amp;rft.btitle=Modellgetriebene+Softwareentwicklung.+Techniken%2C+Engineering%2C+Management&amp;rft.date=2007&amp;rft.edition=2.&amp;rft.genre=book&amp;rft.isbn=9783898644488&amp;rft.pub=Dpunkt+Verlag" style="display:none">&nbsp;</span></li>
<li>Georg Pietrek, Jens Trompeter (Hrsg.), <i>Modellgetriebene Softwareentwicklung. MDA und MDSD in der Praxis</i>, Entwickler-Press, gebundene Ausgabe, ISBN 978-3-939084-11-2.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><span class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wiktionary"></span></span></span><b><a href="https://de.wiktionary.org/wiki/Generator" class="extiw external" title="wikt:Generator">Wiktionary: Generator</a></b>&nbsp;– Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen</div>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Daniel Witsch, Birgit Vogel-Heuser: <cite style="font-style:italic">Automatische Codegenerierung aus der UML für die IEC 61131-3</cite>. In: <cite style="font-style:italic">Eingebettete Systeme</cite>. Springer Berlin Heidelberg, Berlin, Heidelberg 2004, ISBN 978-3-540-23424-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>9–18</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-18594-6_2">10.1007/978-3-642-18594-6_2</a></span> (<a rel="nofollow" class="external text" href="https://link.springer.com/chapter/10.1007%2F978-3-642-18594-6_2">springer.com</a> [abgerufen am 16.&nbsp;August 2019]).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Codegenerator&amp;rft.atitle=Automatische+Codegenerierung+aus+der+UML+f%C3%BCr+die+IEC+61131-3&amp;rft.au=Daniel+Witsch%2C+Birgit+Vogel-Heuser&amp;rft.btitle=Eingebettete+Systeme&amp;rft.date=2004&amp;rft.doi=10.1007%2F978-3-642-18594-6_2&amp;rft.genre=book&amp;rft.isbn=9783540234241&amp;rft.pages=9-18&amp;rft.place=Berlin%2C+Heidelberg&amp;rft.pub=Springer+Berlin+Heidelberg" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-rumpe2012-2"><span class="mw-cite-backlink"><a href="#cite_ref-rumpe2012_2-0">↑</a></span> <span class="reference-text">Bernhard Rumpe: <cite style="font-style:italic">Agile Modellierung mit UML</cite> (=&nbsp;<cite style="font-style:italic">Xpert.press</cite>). Springer Berlin Heidelberg, Berlin, Heidelberg 2012, ISBN 978-3-642-22429-4, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-22430-0">10.1007/978-3-642-22430-0</a></span> (<a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007%2F978-3-642-22430-0">springer.com</a> [abgerufen am 16.&nbsp;August 2019]).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Codegenerator&amp;rft.au=Bernhard+Rumpe&amp;rft.btitle=Agile+Modellierung+mit+UML&amp;rft.date=2012&amp;rft.doi=10.1007%2F978-3-642-22430-0&amp;rft.genre=book&amp;rft.isbn=9783642224294&amp;rft.place=Berlin%2C+Heidelberg&amp;rft.pub=Springer+Berlin+Heidelberg&amp;rft.series=Xpert.press" style="display:none">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-09-24" href="https://de.wikipedia.org/wiki/?title=Codegenerator&amp;oldid=260018840">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>